﻿using System;
using System.Collections.Generic;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DAO.Repositories;

namespace DAO
{
    public class ServerRepository : BaseRepository<Server>
    {
        DeployAppEntities _dbModel;
        public ServerRepository(DeployAppEntities dbModel) : base(dbModel)
        {
            _dbModel = dbModel;
        }

        public void SetIsDelete(int id)
        {
            var server = _dbModel.Servers.FirstOrDefault(t => t.id == id);
            if (server == null)
                throw new InvalidOperationException("При удалении объекта произошла ошибка. Не компонент сервера с таким идентификатором.");
            server.IsDelete = 1;
        }

        public void AddServerObject(DeployObject depObj, int idServer)
        {
            if (depObj == null)
                throw new ArgumentNullException("depObj");
            var serv = _dbModel.Servers.FirstOrDefault(t => t.id == idServer);
            if (serv == null)
                throw new InvalidOperationException("При добавлении нового объекта к серверу произошла ошибка. Сервер с таким идентификатором не найден.");
            serv.DeployObjects.Add(depObj);
        }

        public IEnumerable<Server> GetAllNotDeleted()
        {
            return _dbModel.Servers.Where(t => t.IsDelete == 0);
        }
    }
}
